package com.czk.utils;

import com.czk.domain.*;

/**
 * @Author:ChenZhangKun
 * @Date: 2021/4/23 11:23
 */
public class MsgUtil {
    /**
     * 请求传输文件（客户端）
     *
     * @param fileUrl  文件地址
     * @param fileName 文件名称
     * @param fileSize 文件大小
     * @return
     */
    public static FileTransferProtocol buildRequestTransferFile(String fileUrl, String fileName, Long fileSize) {
        // 文件描述信息
        FileDescInfo fileDescInfo = new FileDescInfo();
        fileDescInfo.setFileUrl(fileUrl);
        fileDescInfo.setFileName(fileName);
        fileDescInfo.setFileSize(fileSize);
        // 协议
        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        // 传输文件
        fileTransferProtocol.setTransferType(0);
        // 传输信息
        fileTransferProtocol.setTransferObj(fileDescInfo);
        return fileTransferProtocol;
    }

    /**
     * 文件传输指令，服务端
     * @param status
     * @param clientFileUrl
     * @param readPosition
     * @return
     */
    public static FileTransferProtocol buildTransferInstruct(Integer status,String clientFileUrl,Integer readPosition){
        FileBurstInstruct fileBurstInstruct=new FileBurstInstruct();
        fileBurstInstruct.setClientUrl(clientFileUrl);
        fileBurstInstruct.setReadPosition(readPosition);
        fileBurstInstruct.setStatus(status);

        FileTransferProtocol fileTransferProtocol=new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.INSTRUCT);
        fileTransferProtocol.setTransferObj(fileBurstInstruct);
        return fileTransferProtocol;

    }
    /**
     * 构建对象；文件传输指令(服务端)
     *
     * @return 传输协议
     */
    public static FileTransferProtocol buildTransferInstruct(FileBurstInstruct fileBurstInstruct) {
        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        // 0传输文件'请求'、1文件传输'指令'、2文件传输'数据'
        fileTransferProtocol.setTransferType(Constants.TransferType.INSTRUCT);
        fileTransferProtocol.setTransferObj(fileBurstInstruct);
        return fileTransferProtocol;
    }

    /**
     * 构建对象；文件传输数据(客户端)
     *
     * @return 传输协议
     */
    public static FileTransferProtocol buildTransferData(FileBurstData fileBurstData) {
        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        // 0传输文件'请求'、1文件传输'指令'、2文件传输'数据'
        fileTransferProtocol.setTransferType(Constants.TransferType.DATA);
        fileTransferProtocol.setTransferObj(fileBurstData);
        return fileTransferProtocol;
    }

}
